<?php
//------------------------------------------------------------ Contraintes d'accès de la page

	// on vérifie que cette page est appelée à partir de l'index et que l'utilisateur a le droit de suppression
	if(isset($_SESSION) && ($GLOBALS['USER']['level'] >= 5 || $GLOBALS['USER']['admin'])){
	
		// l'identifiant de la donnée à supprimer est indiqué par un entier
		if(isset($_GET['id']) && numericInt($_GET['id'])){

?>
<?php
//------------------------------------------------------------ Suppression des données

/********************************* Règles :

	- id doit désigner un seul semis
	- Le semis doit exister dans la BDD
	- Le semis ne doit pas être lié à une entrée

*****************************************/

	$statut = array(); // indique le statut du traitement du formulaire (echec ou succes) - tableau contenant les messages à afficher
	$erreur = false; // indique si une erreur a été rencontrée lors du traitement

	//---------------------------------- Contrôle des données ----------------------------------
		
	$nb_semis = valueExists((int)$_GET['id'], "CODESEMIS", "semis", $connexion);
	
	if($nb_semis == 0){ // le semis n'existe pas
		$statut[] = "Le semis indiqué n'existe pas";
		$erreur = true;
	}else{
	
		// On compte le nombre de liens entre le semis et d'autres entités
		$query_recuperation_nb_liens_semis = "SELECT COUNT(*) ";
		$query_recuperation_nb_liens_semis .= "FROM semis s, entree a ";
		$query_recuperation_nb_liens_semis .= "WHERE s.CODESEMIS = a.CODESEMIS ";
		$query_recuperation_nb_liens_semis .= "AND s.CODESEMIS = ".$_GET['id']." ";
		
		$result_recuperation_nb_liens_semis = mysql_query($query_recuperation_nb_liens_semis, $connexion) or logError("RECUPERATION NB LIENS SEMIS-".$query_recuperation_nb_liens_semis."-".mysql_error());
		
		if(mysql_num_rows($result_recuperation_nb_liens_semis) == 1){ // on a réussi à récupérer les données du semis à supprimer
			
			$tab_recuperation_nb_liens_semis = mysql_fetch_row($result_recuperation_nb_liens_semis);
			
			if($tab_recuperation_nb_liens_semis[0] > 0){
				$statut[] = "Ce semis a été utilisé par ".$tab_recuperation_nb_liens_semis[0]." entrée(s)";
				$erreur = true;
			}
			
		}else{
			$statut[] = "Une donnée n'a pas pu être vérifiée";
			$erreur = true;
		}
		
		mysql_free_result($result_recuperation_nb_liens_semis);
		
	}
	
	//---------------------------------- Suppression du semis ----------------------------------
	
	if(!$erreur){ // aucune erreur n'a été rencontrée jusqu'ici
	
		// Récupération des informations utiles pour supprimer les entrées du semis
		$query_recuperation_entrees_semis = "SELECT e.CODEPRETENTRANT, e.CODELIGNELIVRAISON, l.CODELIVRAISON ";
		$query_recuperation_entrees_semis .= "FROM entree e ";
		$query_recuperation_entrees_semis .= "LEFT JOIN ligne_livraison l ON e.CODELIGNELIVRAISON = l.CODELIGNELIVRAISON ";
		$query_recuperation_entrees_semis .= "WHERE e.SEM_CODESEMIS = ".$_GET['id']." ";
		$query_recuperation_entrees_semis .= "AND (e.CODEPRETENTRANT IS NOT NULL OR e.CODELIGNELIVRAISON IS NOT NULL) ";
		
		$result_recuperation_entrees_semis = mysql_query($query_recuperation_entrees_semis, $connexion) or logError("RECUPERATION ENTREES SEMIS-".$query_recuperation_entrees_semis."-".mysql_error());
	
		// Récupération des informations utiles pour supprimer les sorties du semis
		$query_recuperation_sorties_semis = "SELECT CODEPRETSORTANT ";
		$query_recuperation_sorties_semis .= "FROM sortie ";
		$query_recuperation_sorties_semis .= "WHERE CODESEMIS = ".$_GET['id']." ";
		$query_recuperation_sorties_semis .= "AND CODEPRETSORTANT IS NOT NULL ";
		
		$result_recuperation_sorties_semis = mysql_query($query_recuperation_sorties_semis, $connexion) or logError("RECUPERATION ENTREES SEMIS-".$query_recuperation_sorties_semis."-".mysql_error());
	
		// Suppression des informations de la table ENTREE
		$query_suppression_entree = "DELETE FROM entree WHERE SEM_CODESEMIS = ".$_GET['id'];
		$result_suppression_entree = mysql_query($query_suppression_entree, $connexion) or logError("SUPPRESSION ENTREE-".$query_suppression_entree."-".mysql_error());
		if($result_suppression_entree === false){
			$statut[] = "Erreur critique lors de la suppression d'une entrée";
			$erreur = true;
		}

		// Suppression des informations de la table SORTIE
		$query_suppression_sortie = "DELETE FROM sortie WHERE CODESEMIS = ".$_GET['id'];
		$result_suppression_sortie = mysql_query($query_suppression_sortie, $connexion) or logError("SUPPRESSION SORTIE-".$query_suppression_sortie."-".mysql_error());
		if($result_suppression_sortie === false){
			$statut[] = "Erreur critique lors de la suppression de la sortie";
			$erreur = true;
		}
		
		if($result_suppression_entree === true && $result_suppression_sortie === true){
	
			while($tab_recuperation_entrees_semis = mysql_fetch_row($result_recuperation_entrees_semis)){
			
				if(!is_null($tab_recuperation_entrees_semis[0])){ // L'entrée est un prêt
					// Suppression des informations de la table PRET_ENTRANT
					$query_suppression_pret_entrant = "DELETE FROM pret_entrant WHERE CODEPRETENTRANT = ".$tab_recuperation_entrees_semis[0];
					$result_suppression_pret_entrant = mysql_query($query_suppression_pret_entrant, $connexion) or logError("SUPPRESSION PRET ENTRANT-".$query_suppression_pret_entrant."-".mysql_error());
					if($result_suppression_pret_entrant === false){
						$statut[] = "Erreur critique lors de la suppression de l'emprunt";
						$erreur = true;
					}
				}
				
				if(!is_null($tab_recuperation_entrees_semis[1])){ // L'entrée est une livraison
				
					// Suppression des informations de la table LIGNE_LIVRAISON
					$query_suppression_ligne_livraison = "DELETE FROM ligne_livraison WHERE CODELIGNELIVRAISON = ".$tab_recuperation_entrees_semis[1];
					$result_suppression_ligne_livraison = mysql_query($query_suppression_ligne_livraison, $connexion) or logError("SUPPRESSION LIGNE LIVRAISON-".$query_suppression_ligne_livraison."-".mysql_error());
					if($result_suppression_ligne_livraison === false){
						$statut[] = "Erreur critique lors de la suppression de la livraison";
						$erreur = true;
					}
					
					// Suppression des informations de la table LIVRAISON
					if(valueExists((int)$tab_recuperation_entrees_semis[2], "CODELIVRAISON", "livraison", $connexion) > 0){
						if(valueExists((int)$tab_recuperation_entrees_semis[2], "CODELIVRAISON", "ligne_livraison", $connexion) == 0){
							$query_suppression_livraison = "DELETE FROM livraison WHERE CODELIVRAISON = ".$tab_recuperation_entrees_semis[2];
							$result_suppression_livraison = mysql_query($query_suppression_livraison, $connexion) or logError("SUPPRESSION LIVRAISON-".$query_suppression_livraison."-".mysql_error());
							if($result_suppression_livraison === false){
								$statut[] = "Erreur critique lors de la suppression de la livraison";
								$erreur = true;
							}
						}
					}
					
				}
			
			}
			
			while($tab_recuperation_sorties_semis = mysql_fetch_row($result_recuperation_sorties_semis)){
			
				if(!is_null($tab_recuperation_sorties_semis[0])){ // La sortie est un prêt
					// Suppression des informations de la table PRET_SORTANT
					$query_suppression_pret_sortant = "DELETE FROM pret_sortant WHERE CODEPRETSORTANT = ".$tab_recuperation_sorties_semis[0];
					$result_suppression_pret_sortant = mysql_query($query_suppression_pret_sortant, $connexion) or logError("SUPPRESSION PRET SORTANT-".$query_suppression_pret_sortant."-".mysql_error());
					if($result_suppression_pret_sortant === false){
						$statut[] = "Erreur critique lors de la suppression du prêt";
						$erreur = true;
					}
				}
			
			}
			
			// Suppression des informations de la table SEMIS
			$query_suppression_semis = "DELETE FROM semis WHERE CODESEMIS = ".$_GET['id'];
			$result_suppression_semis = mysql_query($query_suppression_semis, $connexion) or logError("SUPPRESSION SEMIS-".$query_suppression_semis."-".mysql_error());
			if($result_suppression_semis === false){
				$statut[] = "Erreur critique lors de la suppression du semis";
				$erreur = true;
			}
			
			if(!$erreur){
				$statut[] = "Le semis a été supprimé - redirection dans 2 sec...";
				logAction("SEMIS (id: ".$_GET['id'].") SUPPRIME par ".capitalise($GLOBALS['USER']['prenom'])." ".mb_strtoupper($GLOBALS['USER']['nom'])." (".$GLOBALS['USER']['login'].")");
			}
			
		}

		mysql_free_result($result_recuperation_entrees_semis);
		mysql_free_result($result_recuperation_sorties_semis);

	}

?>
<?php
//------------------------------------------------------------ Affichage du statut
	
	if($erreur){
		boutonRetour("index.php?p=gestion/semis_gere"); // appel à la fonction boutonRetour() définie dans fonctions.php
		afficherStatut($statut, 3); // appel à la fonction afficherStatut() définie dans fonctions.php
	}else{
		afficherStatut($statut, 1); // appel à la fonction afficherStatut() définie dans fonctions.php
		redirection("gestion/semis_gere", 2);
	}

?>
<?php
	if($erreur){
?>
<div class="information">
	<div class="titre">Information</div>
	<h4>Erreurs de suppression :</h4>
	<p>
		Si la ressource à supprimer est liée à d'autres éléments, vous ne pourrez pas la supprimer.<br />
		Si vous souhaitez tout de même la supprimer, il vous faudra préalablement supprimer les éléments auxquels elle est liée.
	</p>
</div>
<?php
	}
?>
<?php
//------------------------------------------------------------ Accès refusé à la page

		}else{
			afficherStatut("Le semis n'est pas ou mal indiqué", 3); // appel à la fonction afficherStatut() définie dans fonctions.php
		}

	}else{
		if(isset($_SESSION)){
			if(!isset($_SESSION['user_id'])){ // si l'utilisateur n'est pas connecté
				include("pages/connexion.php");
			}else{ // si l'utilisateur est connecté et qu'il n'a pas accès à la page, c'est qu'il n'a pas le droit d'utilisation nécessaire
				include("pages/401.htm");
			}
		}
	}

?>